//
// Created by User on 24-10-3.
//

#ifndef FRAME_PROVIDER_HPP
#define FRAME_PROVIDER_HPP

extern "C" {
struct AVCodecParameters;
struct AVRational;
}

namespace utils
{
    class media_frame;
}

namespace interfaces
{
    class frame_provider
    {
    public:
        frame_provider() = default;

        virtual ~frame_provider() = default;

        virtual utils::media_frame get_frame() = 0;

        virtual const AVCodecParameters* get_codec() const = 0;

        virtual AVRational get_timebase() const = 0;

        virtual int total_frames() const = 0;
    };

    class video_frame_provider
        : public frame_provider
    {
    };

    class audio_frame_provider
        : public frame_provider
    {
    };
}

#endif //FRAME_PROVIDER_HPP
